diff --git a/system/core/Input.php b/system/core/Input.php
index ea5b248..16b2955 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -109,22 +109,19 @@
 	* @param	bool
 	* @return	string
 	*/
-	function get($index = '', $xss_clean = FALSE)
+	function get($index = NULL, $xss_clean = FALSE)
 	{
-		// check if a field has been entered
-		if( empty($index) AND is_array($_GET) AND count($_GET) )
+		// Check if a field has been provided
+		if ($index === NULL AND ! empty($_GET))
 		{
-			// no field entered - return all fields
-
-			$all_get_fields = array();
+			$get = array();
 
 			// loop through the full _GET array
-			foreach( $_GET as $key )
+			foreach (array_keys($_GET) as $key)
 			{
-				$all_get_fields[$key] = $this->_fetch_from_array($_GET, $key, $xss_clean);
+				$get[$key] = $this->_fetch_from_array($_GET, $key, $xss_clean);
 			}
-			return $all_get_fields;
-
+			return $get;
 		}
 
 		return $this->_fetch_from_array($_GET, $index, $xss_clean);
@@ -140,22 +137,19 @@
 	* @param	bool
 	* @return	string
 	*/
-	function post($index = '', $xss_clean = FALSE)
+	function post($index = NULL, $xss_clean = FALSE)
 	{
-		// check if a field has been entered
-		if( empty($index) AND is_array($_POST) AND count($_POST) )
+		// Check if a field has been provided
+		if ($index === NULL AND ! empty($_POST))
 		{
-			// no field entered - return all fields
+			$post = array();
 
-			$all_post_fields = array();
-
-			// loop through the full _POST array
-			foreach( $_POST as $key )
+			// Loop through the full _POST array and return it
+			foreach (array_keys($_POST) as $key)
 			{
-				$all_post_fields[$key] = $this->_fetch_from_array($_POST, $key, $xss_clean);
+				$post[$key] = $this->_fetch_from_array($_POST, $key, $xss_clean);
 			}
-			return $all_post_fields;
-
+			return $post;
 		}
 		
 		return $this->_fetch_from_array($_POST, $index, $xss_clean);
